// pages/staff/consults/index.js
const app = getApp()

Page({

  /**
   * 页面的初始数据
   */
  data: {
    conversations: [],         // 会话列表
    pageNum: 1,                // 当前页码
    pageSize: 10,              // 每页数量
    hasMoreData: true,         // 是否有更多数据
    isLoading: false,          // 是否正在加载
    isLoadingMore: false,      // 是否正在加载更多
    isRefreshing: false,       // 是否正在下拉刷新
    searchKeyword: '',         // 搜索关键词
    originalConversations: []  // 原始会话列表（用于搜索）
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.getConversationList()
  },

  /**
   * 获取会话列表
   */
  getConversationList(isLoadMore = false) {
    if (this.data.isLoading) return
    
    const loadingState = isLoadMore ? 'isLoadingMore' : 'isLoading'
    this.setData({
      [loadingState]: true
    })

    wx.request({
      url: `${app.globalData.baseUrl}/consult/conversation/staff/recent`,
      method: 'GET',
      data: {
        pageNum: this.data.pageNum,
        pageSize: this.data.pageSize
      },
      header: {
        'Authorization': `Bearer ${wx.getStorageSync('token')}`
      },
      success: (res) => {
        if (res.data.code === 0) {
          const newConversations = res.data.data.list || []
          const total = res.data.data.total || 0
          const hasMoreData = this.data.pageNum * this.data.pageSize < total
          
          // 格式化时间
          newConversations.forEach(conv => {
            if (conv.lastMessageTime) {
              const date = new Date(conv.lastMessageTime)
              const now = new Date()
              const isToday = date.toDateString() === now.toDateString()
              
              if (isToday) {
                conv.lastMessageTime = `${date.getHours().toString().padStart(2, '0')}:${date.getMinutes().toString().padStart(2, '0')}`
              } else {
                conv.lastMessageTime = `${(date.getMonth() + 1).toString().padStart(2, '0')}-${date.getDate().toString().padStart(2, '0')}`
              }
            }
          })
          
          if (isLoadMore) {
            // 加载更多，将新数据追加到列表后面
            this.setData({
              conversations: [...this.data.conversations, ...newConversations],
              originalConversations: [...this.data.originalConversations, ...newConversations],
              hasMoreData,
              isLoadingMore: false
            })
          } else {
            // 首次加载或刷新，直接设置数据
            this.setData({
              conversations: newConversations,
              originalConversations: newConversations,
              hasMoreData,
              isLoading: false,
              isRefreshing: false
            })
          }
        } else {
          this.setData({
            [loadingState]: false,
            isRefreshing: false
          })
          wx.showToast({
            title: res.data.msg || '获取会话列表失败',
            icon: 'none'
          })
        }
      },
      fail: () => {
        this.setData({
          [loadingState]: false,
          isRefreshing: false
        })
        wx.showToast({
          title: '网络错误，请重试',
          icon: 'none'
        })
      }
    })
  },

  /**
   * 加载更多会话
   */
  loadMoreConversations() {
    if (!this.data.hasMoreData || this.data.isLoadingMore) return
    
    this.setData({
      pageNum: this.data.pageNum + 1
    })
    
    this.getConversationList(true)
  },

  /**
   * 下拉刷新
   */
  onRefresh() {
    this.setData({
      pageNum: 1,
      isRefreshing: true
    })
    
    this.getConversationList()
  },

  /**
   * 搜索输入变化
   */
  onSearchInput(e) {
    const keyword = e.detail.value.trim()
    this.setData({
      searchKeyword: keyword
    })
    
    this.searchConversations(keyword)
  },

  /**
   * 清除搜索
   */
  clearSearch() {
    this.setData({
      searchKeyword: '',
      conversations: this.data.originalConversations
    })
  },

  /**
   * 执行搜索
   */
  searchConversations(keyword) {
    if (!keyword) {
      this.setData({
        conversations: this.data.originalConversations
      })
      return
    }
    
    const filteredConversations = this.data.originalConversations.filter(
      conv => (conv.userName && conv.userName.toLowerCase().includes(keyword.toLowerCase()))
    )
    
    this.setData({
      conversations: filteredConversations
    })
  },

  /**
   * 跳转到聊天页面
   */
  navigateToChat(e) {
    const conversationId = e.currentTarget.dataset.id
    wx.navigateTo({
      url: `/pages/staff/consults/chat?id=${conversationId}`
    })
  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    // 显示页面时刷新会话列表
    this.setData({
      pageNum: 1
    })
    this.getConversationList()
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    this.setData({
      pageNum: 1
    })
    this.getConversationList()
    
    setTimeout(() => {
      wx.stopPullDownRefresh()
    }, 1000)
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})